package toolvideo;

import cn.novelweb.video.command.CommandLineOperations;
import cn.novelweb.video.command.assemble.CommandBuilderFactory;
import cn.novelweb.video.edit.VideoEditing;
import cn.novelweb.video.edit.WatermarkLocation;
import cn.novelweb.video.format.FormatConversion;
import cn.novelweb.video.pojo.ProgramConfig;
import util.RandomStrUtil;

/**
 * toolvideo
 *
 * @description:
 * @author: yechen
 * @email: wangqingfeng@wxyundian.com
 * @date: 2020年09月29日 11:43
 */
public class FfmpegUtil {
    /**
     * 初始化时利用反射获取jave-1.0.1.jar中FFmpeg.exe的路径
     * 利用jave-1.0.1.jar来避免本地安装FFmpeg.exe
     */
//    static {
//        //构建配置类
//        ProgramConfig programConfig = new ProgramConfig();
//        //设置ffmpeg.exe所在的路径
//        programConfig.setPath("D:/ffmpeg/bin/ffmpeg.exe");
//        //debug日志的输出
//        programConfig.setDeBugLog(true);
//        CommandLineOperations.init(programConfig);
//    }

    public static void main(String[] args) {
//        //构建任务id，任务标识，任务名称
//        String taskId = System.currentTimeMillis() + RandomStrUtil.randomStr(18);
//        //需要转换的源文件
//        //如果你是windows下操作，需要使用相对路径，在windows下操作不能携带盘符
//        //如文件： D:\\4\\4.mp4,需转成 /4/4.mp4
//        //同时需要注意FFMPEG执行文件的根目录要与视频文件在同一盘符。否则会找不到文件，任何路径中不能存在空格
//        String input = "";
//        String output = "";
//
//        //---------------------------- start 方法返回组装好的命令字符串
//        //任务id 直接写入命令
//        //CommandLineOperations.start(taskId, "");
//        //任务id，流式构建命令
//        CommandLineOperations.start(taskId, CommandBuilderFactory.create()
//                .add("-i", input)
//        );
//        //------------------------------------------ stop停止任务
//        //stop(任务id) 停止单个任务，返回任务是否被停止了
//        CommandLineOperations.stop(taskId);
//        //stopAll 停止全部任务，返回停止的任务数量
//        CommandLineOperations.stopAll();
//        //get(任务id) 获取单个任务的任务主进程
//        CommandLineOperations.get(taskId);
//        //getAll 获取所有任务
//        CommandLineOperations.getAll();
//        // 获取任务进度回调(查找任务id，input源文件，输出任务进度)
//        VideoEditing.getProgress(taskId, input, System.out::println);

//        String input1 = "E:/video-version/course.mp4";
//        String output1 = "E:/video-version/course_1.mp4";
//        String subitles = "夜辰真棒~";
//        String watermark = "E:/video-version/temp-avatar.png";
//
//        ProgramConfig build = ProgramConfig.builder().build();
//        //设置ffmpeg.exe所在的路径
//        build.setPath("D:/ffmpeg/bin/ffmpeg.exe");
//        //debug日志的输出
//        build.setDeBugLog(true);
//        VideoEditing.init(build);
////        //添加视频字幕(字幕文件，源文件，输出文件，输出进度)
////        VideoEditing.addSubtitles(subitles, input1, output1, System.out::println);
////        //任意格式转为mp4(源文件，输出文件，输出进度)
////        VideoEditing.converterToMp4(input1, output1, System.out::println);
////        //添加视频水印(水印文件，右上角添加水印，源文件，输出文件，输出进度)
////        VideoEditing.addWatermark(watermark, WatermarkLocation.rightUp, input1, output1, System.out::println);
//        //视频剪辑(开始时间，结束时间，源文件，输出文件，输出进度)
//        //从某时间间隔，剪切一段视频，如：[startTime=3600,duration=10,表示从第3600秒开始，向后截取10秒钟的视频]
//        VideoEditing.clipVideo("0", "300", input1, output1, System.out::println);

        System.out.println(FormatConversion.getVideoParameters("E:/video-version/course.mp4"));

    }
}
